package com.tiamo.traders.entity;

import org.springframework.stereotype.Component;

@Component
public class ResultModel{
    private Integer code;//给前端状态编码0,1,2,200.500,404
    private String msg;//给前端提示”成功，失败等
    private Integer count;//数据的条数
    private Object data;//查询后得到的数据
    private static ResultModel resultModel=null;



    private ResultModel() {
    }
    /**
     * 既然是公共的返回结果，而且不需要每次都去创建对象，所以，这里用static
     * 那么，再其他类调用当前这个类的时候，不允许创建当前类对象，
     * 其他类调用当前的new关键字创建的方法，其实是调用当前类的构造方法
     * 所以，我们可以让当前的构造方法私有化
     *
     * @param data
     * @return
     */
    public static ResultModel getResultModel(Object data) {
        return setResultModel(200,"", 0, data);
    }

    public static ResultModel getResultModel(Object data, int count) {
        return setResultModel(200,"", count, data);
    }

    /**
     * 将影响的条数放入count里面
     *
     * @param count
     * @return
     */
    public static ResultModel getResultModel(Integer count) {
        return setResultModel(200,"", count, null);
    }
    /**
     * 根据消息返回结果对象
     *
     * @param msg
     * @return
     */
    public static ResultModel getResultModel(String msg) {
        return setResultModel(200,msg, 0, null);
    }

    public static ResultModel getResultModel(int code,String msg) {
        return setResultModel(code,msg, 0, null);
    }
    public static ResultModel getResultModel(int code,String msg,Object data) {
        return setResultModel(code,msg, 0, data);
    }
    public static ResultModel getResultModel(int code,String msg,Integer count,Object data) {
        return setResultModel(code,msg, count, data);
    }
    /*private static ResultModel setResultModel(int code,String msg) {
        if (resultModel == null) {
            resultModel = new ResultModel();
        }
        resultModel.setCode(code);
        resultModel.setMsg(msg);
        return resultModel;
    }*/
    private static ResultModel setResultModel( int code,String msg, Integer count, Object data) {
        if (resultModel == null) {
            resultModel = new ResultModel();
        }
        resultModel.setCode(code);
        resultModel.setMsg(msg);
        resultModel.setCount(count);
        resultModel.setData(data);
        return resultModel;
    }


    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}

//    //    所有属性用引用类型，不要用基本类型
//    private String msg;
//    private Integer code;
//    private Integer count;
//    private Object data;
//    private static ResultModel resultModel;
//
//    //    public ResultModel(String msg, Integer code, Integer count, Object data) {
////        this.msg = msg;
////        this.code = code;
////        this.count = count;
////        this.data = data;
////    }
//    public static ResultModel getResultModel(String msg, Integer code, Integer count, Object data) {
//        if (resultModel == null) {
//            resultModel = new ResultModel();
//        }
//        resultModel.setData(data);
//        resultModel.setCount(count);
//        resultModel.setCode(code);
//        resultModel.setMsg(msg);
//        return resultModel;
//    }
//
//    public ResultModel() {
//    }
//
//    /**
//     * 单例模式
//     *
//     * @param msg
//     * @return
//     */
//    public static ResultModel getResultModelByMsg(String msg) {
//        if (resultModel == null) {
//            resultModel = new ResultModel();
//        }
//        resultModel.setMsg(msg);
//        return resultModel;
//    }
//
//    /**
//     * 得到影响的条数
//     *
//     * @param count
//     * @return
//     */
//    public static ResultModel getResultModelByCount(int count) {
//        if (resultModel == null) {
//            resultModel = new ResultModel();
//        }
//        resultModel.setCount(count);
//        return resultModel;
//    }
//
//    public static ResultModel getResultModelByAll(Object data, int count) {
//        if (resultModel == null) {
//            resultModel = new ResultModel();
//        }
//        resultModel.setCount(count);
//        resultModel.setData(data);
//        return resultModel;
//    }
////    public ResultModel(String msg) {
////        this.msg = msg;
////    }
//
//    public Integer getCount() {
//        return count;
//    }
//
//    public void setCount(Integer count) {
//        this.count = count;
//    }
//
//    public Object getData() {
//        return data;
//    }
//
//    public void setData(Object data) {
//        this.data = data;
//    }
//
//    public String getMsg() {
//        return msg;
//    }
//
//    public void setMsg(String msg) {
//        this.msg = msg;
//    }
//
//    public Integer getCode() {
//        return code;
//    }
//
//    public void setCode(Integer code) {
//        this.code = code;
//    }

